<?php
App::import('Vendor', 'twitter', array('file'=>'twitter'.DS.'TwitterApi.php'));
class TwitterComponent extends Object {
	
	var $user;
	var $api;
	var $cache = array();	//第一次キャッシュ
	var $consumer_key = "si2UvZAvFqJULHPSReXjA";
	var $consumer_secret = "qn4YEDOFUPYTwWkexlk2SdDYcW7zAvRaPNSR5GJ5k";
	
	function startup(&$controller){
		if(!empty($controller->datahash['login_user'])){	
			$this->user = $controller->datahash['login_user'];
			$this->api = new TwitterApi(
					$this->consumer_key,
					$this->consumer_secret,
					$this->user['User']['access_token_key'],
					$this->user['User']['access_token_secret']
			);
		}
	}
	
	/*
	 * 
	 */
	function getTwitterUser($user){
		//第二次キャッシュの設定
		//APIに制限があるのでキャッシュにTwitterのユーザー情報を蓄えておく
		Cache::config('twitter_user', array(	
			'engine' => 'File',
			'duration'=> '+1 week',
			'probability'=> 100,
		));
		//メモリに存在したら返す
		if(array_key_exists($user['User']['id'], $this->cache)){
			return $this->cache[$user['User']['id']];
		}
		$twitterUser = Cache::read("twitter_user_".$user['User']['name'],'twitter_user');//キャッシュから読み込む
		if(empty($twitterUser)){				//キャッシュにデータがないと場合witterサーバーから取ってくる
			$twitterUser = $this->api->showUser(array('id' => $user['User']['id']));
			$twitterUser->use_api = 1;
			Cache::write("twitter_user_".$user['User']['name'], $twitterUser,'twitter_user');	//キャッシュに書き込み
		}
		$this->cache[$twitterUser->id_str] = $twitterUser;	//いちいちファイル読むのも面倒なのでメモリに保存
		return $twitterUser;
	}
}
?>